import fs from 'fs-extra';
import prompt from 'prompts';

import logger, { prefix } from '../utils/logger';
import { configTemplate } from './template';
import { codeFormat } from '../utils';

/**
 * 判断是否写入文件
 * @param path 配置文件路径
 * @returns Promise<boolean>
 */
async function handleCheckFile(path: string): Promise<boolean> {
  if (await fs.pathExists(path)) {
    logger.info(`检测到文件: ${path}`);

    const data = prompt({
      type: 'confirm',
      name: 'override',
      message: `${prefix} 是否覆盖已有配置文件?`
    });
    const isOverride: boolean = (await data).override;
    return isOverride;
  }
  return true;
}

/**
 * 写入配置文件
 * @param path 配置文件路径
 * @returns Promise<void>
 */
export default async function create(path: string) {
  const isOverride = await handleCheckFile(path);
  if (isOverride) {
    await fs.outputFile(path, codeFormat(configTemplate));
    logger.success('文件生成成功');
  }
}
